package tpo.vista.empleados;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import tpo.controlador.Sistema;
import tpo.to.ClienteDTO;
import tpo.to.ModeloDTO;
import tpo.to.TipoModeloDTO;

public class ModificacionModelo extends JFrame {
	
	private Sistema sistema;
	
	public ModificacionModelo(Sistema sistema){
		super("Modificacion Modelo");
		this.sistema = sistema;
		init();
		setVisible(true);
	}
	
	private void init(){
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setLayout(new GridBagLayout());
		GridBagConstraints gc = new GridBagConstraints();
		
		List<ModeloDTO> modelosDTO = sistema.getModelosDTO();
		List<TipoModeloDTO> tiposModeloDTO = sistema.getTiposModeloDTO();

		JLabel labelModelo = new JLabel ("Modelo");
		JLabel labelMarca = new JLabel("Marca");
		JLabel labelModelo2 = new JLabel("Modelo");
		JLabel labelDatosMotor = new JLabel("Datos Motor");
		JLabel labelDatosSeguridad = new JLabel("Datos Seguridad");
		JLabel labelTipoModelo = new JLabel("Tipo Modelo");
		JLabel labelCostoDiario = new JLabel("Costo diario (x.x)");
		JLabel labelCostoKMExcedente = new JLabel("Costo KM excedente (x.x)");
		final JComboBox modelosCombo = new JComboBox(modelosDTO.toArray());
		final JTextField fieldMarca = new JTextField("");
		final JTextField fieldModelo = new JTextField("");
		final JTextField fieldDatosMotor = new JTextField("");
		final JTextField fieldDatosSeguridad = new JTextField("");
		final JComboBox tiposModeloCombo = new JComboBox(tiposModeloDTO.toArray());
		final JTextField fieldCostoDiario = new JTextField("");
		final JTextField fieldCostoKMExcedente = new JTextField("");
		JButton button = new JButton("Guardar");
		
		modelosCombo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JComboBox cb = (JComboBox) e.getSource();
		        ModeloDTO m = (ModeloDTO) cb.getSelectedItem();
		        fieldMarca.setText(m.getMarca());
		        fieldModelo.setText(m.getModelo());
		        fieldDatosMotor.setText(m.getDatosMotor());
		        fieldDatosSeguridad.setText(m.getDatosSeguridad());
		        tiposModeloCombo.setSelectedItem(m.getTipo());
		        fieldCostoDiario.setText(Float.toString(m.getCostoDiario()));
		        fieldCostoKMExcedente.setText(Float.toString(m.getCostoKMExcedente()));
			}
		});
		
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evento) {
				try {
			        ModeloDTO m = (ModeloDTO) modelosCombo.getSelectedItem();
			        TipoModeloDTO tm = (TipoModeloDTO) tiposModeloCombo.getSelectedItem();
					sistema.modificarModelo(m.getCodigo(),
							fieldMarca.getText(), fieldModelo.getText(),
							fieldDatosMotor.getText(),
							fieldDatosSeguridad.getText(), tm.getCodigo(),
							Float.parseFloat(fieldCostoDiario.getText()),
							Float.parseFloat(fieldCostoKMExcedente.getText()));
					dispose();
					System.out.println("Los datos fueron modificados");
				} catch (Exception e) {
					System.out.println("Error al modificar cliente");
				}
			}
		});
		
		gc.gridx = 0;	// Columna
		gc.gridy = 0;	// Fila
		add(labelModelo, gc);		
		gc.gridx = 1;
		gc.gridy = 0;
		add(modelosCombo, gc);
		
		gc.gridx = 0;	// Columna
		gc.gridy = 1;	// Fila
		add(labelMarca, gc);		
		gc.gridx = 1;
		gc.gridy = 1;
		fieldMarca.setColumns(10);
		add(fieldMarca, gc);
		
		gc.gridx = 0;
		gc.gridy = 2;
		add(labelModelo, gc);		
		gc.gridx = 1;
		gc.gridy = 2;
		fieldModelo.setColumns(10);
		add(fieldModelo, gc);
		
		gc.gridx = 0;
		gc.gridy = 3;
		add(labelDatosMotor, gc);		
		gc.gridx = 1;
		gc.gridy = 3;
		fieldDatosMotor.setColumns(10);
		add(fieldDatosMotor, gc);
		
		gc.gridx = 0;
		gc.gridy = 4;
		add(labelDatosSeguridad, gc);		
		gc.gridx = 1;
		gc.gridy = 4;
		fieldDatosSeguridad.setColumns(10);
		add(fieldDatosSeguridad, gc);
		
		gc.gridx = 0;
		gc.gridy = 5;
		add(labelTipoModelo, gc);		
		gc.gridx = 1;
		gc.gridy = 5;
		add(tiposModeloCombo, gc);
		
		gc.gridx = 0;
		gc.gridy = 6;
		add(labelCostoDiario, gc);		
		gc.gridx = 1;
		gc.gridy = 6;
		fieldCostoDiario.setColumns(10);
		add(fieldCostoDiario, gc);
		
		gc.gridx = 0;
		gc.gridy = 7;
		add(labelCostoKMExcedente, gc);		
		gc.gridx = 1;
		gc.gridy = 7;
		fieldCostoKMExcedente.setColumns(10);
		add(fieldCostoKMExcedente, gc);
		
		gc.gridx = 0;
		gc.gridy = 8;
		add(button, gc);
		
		if(!modelosDTO.isEmpty()) {
			ModeloDTO m = (ModeloDTO) modelosCombo.getSelectedItem();
	        fieldMarca.setText(m.getMarca());
	        fieldModelo.setText(m.getModelo());
	        fieldDatosMotor.setText(m.getDatosMotor());
	        fieldDatosSeguridad.setText(m.getDatosSeguridad());
	        tiposModeloCombo.setSelectedItem(m.getTipo());
	        fieldCostoDiario.setText(Float.toString(m.getCostoDiario()));
	        fieldCostoKMExcedente.setText(Float.toString(m.getCostoKMExcedente()));
		} else {
			fieldMarca.setEnabled(false);
			fieldModelo.setEnabled(false);
			fieldDatosMotor.setEnabled(false);
			fieldDatosSeguridad.setEnabled(false);
			tiposModeloCombo.setEnabled(false);
			fieldCostoDiario.setEnabled(false);
			fieldCostoKMExcedente.setEnabled(false);
		}

		pack();
		setSize(400, 300);
	}
}

